home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -serious- / programming / c / stormamiga_lib-v45_00d / include / string.h < prev    next >
C/C++ Source or Header  |  2000-02-28  |  3KB  |  152 lines

  1. #ifndef _INCLUDE_STRING_H
  2. #define _INCLUDE_STRING_H
  3.  
  4. /*
  5. **  $VER: string.h 1.2 (7.2.97)
  6. **  StormC Release 3.0
  7. **
  8. **  '(C) Copyright 1995/96/97 Haage & Partner Computer GmbH'
  9. **       All Rights Reserved
  10. */
  11.  
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15.  
  16. #ifndef NULL
  17. #define NULL 0
  18. #endif
  19.  
  20. typedef unsigned int size_t;
  21.  
  22. #ifndef _INLINE_INCLUDES
  23. char *strcpy (char *, const char *);
  24. char *strcat (char *, const char *);
  25. int strcmp (const char *, const char *);
  26. size_t strlen(const char *);
  27. #endif
  28.  
  29. char *strncpy(char *, const char *, size_t);
  30. char *strncat(char *, const char *, size_t);
  31.  
  32. int strncmp(const char *, const char *, size_t);
  33. char *strchr (const char *, int);
  34. char *strrchr(const char *, int);
  35. size_t strspn (const char *, const char *);
  36. size_t strcspn(const char *, const char *);
  37. char *strpbrk(const char *, const char *);
  38. char *strstr(const char *, const char *);
  39.  
  40. char *strerror(int);
  41. char *strtok(char *, const char *);
  42.  
  43. int stricmp(const char *, const char *);
  44. int strnicmp(const char *, const char *, size_t);
  45. char *strlwr(char *);
  46. char *strupr(char *);
  47.  
  48. #ifndef _INLINE_INCLUDES
  49. void *memcpy(void *, const void *, size_t);
  50. void *memmove(void *, const void *, size_t);
  51. void *memset(void *, int, size_t);
  52. #endif
  53.  
  54. int memcmp(const void *, const void *, size_t);
  55. void *memchr(const void *, int, size_t);
  56.  
  57. #ifndef STORMAMIGA
  58.   #define bzero(a,b) memset(a,0,b)
  59. #endif
  60.  
  61. #ifdef __cplusplus
  62. }
  63. #endif
  64.  
  65. #ifdef _INLINE_INCLUDES
  66. __inline char *strcpy (char *d, const char *s)
  67. {
  68.     char *e = d;
  69.     while ((*(e++) = *(s++)))
  70.         ;
  71.     return d;
  72. }
  73. __inline char *strcat (char *d, const char *s)
  74. {
  75.     char *e = d;
  76.     while (*(e++))
  77.         ;
  78.     e--;
  79.     while ((*(e++) = *(s++)))
  80.         ;
  81.     return d;
  82. }
  83. __inline int strcmp(const char *s1, const char *s2)
  84. {
  85.     int retval = 0;
  86.     char ch1,ch2;
  87.     while ((ch1 = *(s1++)) && ch1 == *(s2++))
  88.         ;
  89.     return ch1 ? ((ch2 = *(s2-1)) == ch1 ? 0 : (ch1 < ch2 ? -1 : 1)) : (*s2 ? -1 : 0);
  90. }
  91. __inline size_t strlen(const char *s)
  92. {
  93.     const char *t = s;
  94.     while (*(t++))
  95.         ;
  96.     return (size_t) (t - s - 1);
  97. }
  98.  
  99. #ifndef  STORMAMIGA_INLINE
  100. __inline void *memcpy(void *d, const void *s, size_t n)
  101. {
  102.     void *r = d;
  103.     n++;
  104.     while (--n > 0)
  105.     {
  106.         *(((unsigned char *) d)++) = *(((unsigned char *) s)++);
  107.     };
  108.     return r;
  109. }
  110. __inline void *memmove(void *d, const void *s, size_t n)
  111. {
  112.     void *r = d;
  113.     if ((unsigned char *) d > (unsigned char *) s)
  114.     {
  115.         n++;
  116.         while (--n > 0)
  117.         {
  118.             *(((unsigned char *) d)++) = *(((unsigned char *) s)++);
  119.         };
  120.     }
  121.     else
  122.     {
  123.         (unsigned char *) d += n;
  124.         (unsigned char *) s += n;
  125.         n++;
  126.         while (--n > 0)
  127.             *(--((unsigned char *) d)) = *(--((unsigned char *) s));
  128.     };
  129.     return r;
  130. }
  131. __inline void *memset(void *m, int c, size_t n)
  132. {
  133.     void *r = m;
  134.     n++;
  135.     while (--n > 0)
  136.         *(((unsigned char *) m)++) = (unsigned char) c;
  137.     return r;
  138. }
  139. #endif /* STORMAMIGA_INLINE */
  140. #endif
  141.  
  142.  
  143. /*----- support for stormamiga.lib -----*/
  144.  
  145. #ifdef STORMAMIGA
  146.   #ifndef  STRING_STORMAMIGA_H
  147.     #include <string_stormamiga.h>
  148.   #endif
  149. #endif
  150.  
  151. #endif
  152.